﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Rance.Battle
{
    class 守护队友1 : 主动技能
    {
        public int 倍率 = 10;
        public 守护队友1()
        {
            this.技能速度 = 100;
            this.消耗行动点 = Battle.消耗行动点.一点;
            this.技能目标 = Battle.技能目标.自己;
            this.技能站位要求 = Battle.技能站位要求.无;
        }

        public override void Excute(技能环境 环境)
        {
            环境.施放者.是否准备 = false;
            环境.队伍状况.战场.行动顺序.行动(环境.施放者, this);

            获得守护率Behavior behavior = new 获得守护率Behavior();
            behavior.角色 = new 角色Struct() { ID = 环境.目标List[0].ID, Name = 环境.目标List[0].Name };

            var value = Convert.ToInt32(倍率 * 环境.目标List[0].实际智);
            环境.目标List[0].守护率 += value;
            环境.目标List[0].全体守护率 = 0;
            behavior.守护率 = value;
            behavior.全体守护率 = 0;
            behavior.当前守护率 = 环境.目标List[0].守护率;
            behavior.当前全体守护率 = 环境.目标List[0].全体守护率;

            环境.行动结果.ResultList.Add(behavior);
        }
    }

    class 守护队友2 : 守护队友1
    {
        public 守护队友2() 
        {
            倍率 = 20;
        }
    }

    class 守护全体队友 : 主动技能
    {
        public int 倍率 = 14;
        public 守护全体队友()
        {
            this.技能速度 = 100;
            this.消耗行动点 = Battle.消耗行动点.一点;
            this.技能目标 = Battle.技能目标.自己;
            this.技能站位要求 = Battle.技能站位要求.无;
        }

        public override void Excute(技能环境 环境)
        {
            环境.施放者.是否准备 = false;
            环境.队伍状况.战场.行动顺序.行动(环境.施放者, this);

            获得守护率Behavior behavior = new 获得守护率Behavior();
            behavior.角色 = new 角色Struct() { ID = 环境.目标List[0].ID, Name = 环境.目标List[0].Name };

            var value = Convert.ToInt32(倍率 * 环境.目标List[0].实际智);
            环境.目标List[0].全体守护率 += value;
            环境.目标List[0].守护率 = 0;
            behavior.守护率 = 0;
            behavior.全体守护率 = value;
            behavior.当前守护率 = 环境.目标List[0].守护率;
            behavior.当前全体守护率 = 环境.目标List[0].全体守护率;

            环境.行动结果.ResultList.Add(behavior);
        }
    }
}
